package interfaces;

// Controllable indicates an object that can be controlled using keyboard input.
// This will be used by a Controller to relay info from Controller to controlled object.
public abstract class Controllable {
	public boolean isUp, isDown, isLeft, isRight, isSpecial; // Current State
	public float x,y,r;
	
	public Controllable(){ 
		isUp=false;
		isDown=false;
		isLeft=false;
		isRight=false;
		isSpecial=false;
	}
	public boolean checkUp(){return(isUp);}
	public boolean checkDown(){return(isDown);}
	public boolean checkLeft(){return(isLeft);}
	public boolean checkRight(){return(isRight);}
	public boolean checkSpecial(){return(isSpecial);}
	
	public void setUp(boolean input){isUp=input;}
	public void setDown(boolean input){isDown=input;}
	public void setLeft(boolean input){isLeft=input;}
	public void setRight(boolean input){isRight=input;}
	public void setSpecial(boolean input){isSpecial=input;}
	
	public abstract void specialUpdate(Trackable object,float error);
}
